package com.chenziwen.scala.chapter08

import scala.collection.mutable

object Scala07_Queue {
  def main(args: Array[String]): Unit = {

    // 创建队列(先进先出)
    val q = new mutable.Queue[Int]

    // 追加元素
    q += 1

    // 追加集合中的元素
    q ++= List(2, 3, 4)
    // 追加任意元素(泛型为Any，这样会将List作为一个整体加入到队列中)
    val q2 = new mutable.Queue[Any]
    q2 += List(2, 3, 4)
    println(q2)

    // 删除元素（队列默认删除头部元素）
    q.dequeue()

    // 增加元素(默认向队尾添加)
    q.enqueue(7, 8, 9)

    // 返回队列中的第一个（头部）元素
    println("队列中的第一个（头部）元素" + q.head)

    // 返回队列中的最后一个元素
    println("队列中的最后一个元素" + q.last)

    println(q)

    // 返回队列中的尾部数据（除开头部元素外，剩余的数据集合称之为尾部数据）
    println(q.tail)
    // 尾部的尾部
    println(q.tail.tail)
    println(q.tail.tail.tail)
    println(q.tail.tail.tail.tail)
    println(q.tail.tail.tail.tail.tail)
    // 最后会返回空队列：Queue()
    println(q.tail.tail.tail.tail.tail.tail)
    // 如果超过队列界限，那么会发生异常：java.lang.IllegalArgumentException: requirement failed: tail of empty list
    //println(q.tail.tail.tail.tail.tail.tail.tail)


  }
}
